T2ST(Text-to-Speech Translation)是文本轉語音的模型,語言可以選擇,不管是輸入及輸出都可以選擇語言,所涵蓋的語言代號請參考連結:SeamlessM4T語言別代號。本篇使用SeamlessM4T的T2ST功能,看看使用流程是否容易上手,以及翻譯結果的準確性。
安裝SeamlessM4T請參考文章安裝SeamlessM4T
先導入模型,本次推出的SeamlessM4T有兩種型號:seamlessM4T_large與seamlessM4T_large。以large版本為例,執行以下程式碼後即已備好模型:
import torch
from seamless_communication.models.inference import Translator
**translator = Translator(
"seamlessM4T_large",
"vocoder_36langs",
torch.device("cuda:0"),
torch.float16,
)
此步驟的用意為在GPU上初始化一個轉譯器,選用模型"seamlessM4T_large",以及聲碼器"vocoder_36langs",官方建議選擇半精度浮點數(float16)可能是因為要節省記憶體,但可能因此影響翻譯精準度。
將文本丟入模型中,我輸的文字為”今晚想吃什麼?”,設定來源語言為中文(cnm),目標語言為英文(eng)
translated_text, wav, sr = translator.predict(
"他一聲不吭地走掉了!",
"t2st",
src_lang="cmn",
tgt_lang="eng"
)
print(translated_text) #He walked away without a word!
輸出文字為”He walked away without a word!”播放,翻譯內容正確,標點符號也正確,不像之前測試中文時,翻譯成中文莫名其妙出現兩個問號。輸出的英語語音如下”He walked away without a word, and so…”除了字面上的意思外,在翻譯英語時自行推測下一句可能會接的詞,語音中出現”and so…”連接詞。
若想將輸出結果儲存為wav檔,執行程式碼如下:
import torchaudio
torchaudio.save("output_t2st.wav", wav[0].cpu(), sample_rate=sr)
若想在Conda環境播放該輸出結果,執行程式碼如下:
from IPython.display import Audio
Audio(wav[0].cpu(), rate=sr)
利用SeamlessM4T的T2ST功能(Text-to-Speech Translation),將輸入文本匯入預備好的轉譯器(Translator),選擇任務t2st,設定目標語言即可做轉譯。本篇使用繁體中文文本轉英語語音,翻譯內容正確,不過比較之下轉譯後的英語語音,口氣通順,且就算輸入文本中沒有連接詞,也會自行預測可能的連接詞;相較之下轉譯後的中文語音,聽起很明顯的機械感,還尚待優化。